/*
 * @File        : 
 * @Team        : Null
 * @Author      : cloudczk
 * @Software    : Keil 5.33
 * @Target core : STM32F407
 * @gitee       : https://gitee.com/cloudczk
 * @Date        : 2021-07-19 10:28:15
 */

#ifndef __CORE_DELAY_H
#define __CORE_DELAY_H

#include "stm32f4xx.h" 

/* 获取内核时钟频率 */
#define GET_CPU_ClkFreq()       HAL_RCC_GetSysClockFreq()
#define SysClockFreq            (168000000)
/* 为方便使用，在延时函数内部调用CPU_DWTInit函数初始化时间戳寄存器，
   这样每次调用函数都会初始化一遍。
   把本宏值设置为0，然后在main函数刚运行时调用CPU_DWTInit可避免每次都初始化 */  

#define CPU_TS_INIT_IN_DELAY_FUNCTION   0  


/*******************************************************************************
 * 函数声明
 ******************************************************************************/
uint32_t CPU_DWTRd(void);
void DWT_InitTick(uint32_t TickPriority);

//使用以下函数前必须先调用CPU_DWTInit函数使能计数器，或使能宏CPU_TS_INIT_IN_DELAY_FUNCTION
//最大延时值为8秒
void CPU_DWT_Delay_US(uint32_t us);
#define CPU_DWT_Delay_MS(ms)     CPU_DWT_Delay_US(ms*1000)
#define CPU_DWT_Delay_S(s)       CPU_DWT_Delay_MS(s*1000)


#endif /* __CORE_DELAY_H */
